package cn.iocoder.yudao.module.reading.controller.app.punch.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.util.List;
import java.util.Map;

/**
 * 完整打卡日历响应 VO
 *
 * @author 李晨
 */
@Schema(description = "完整打卡日历响应 VO")
@Data
public class PunchCalendarAllRespVO {

    @Schema(description = "总打卡天数", requiredMode = Schema.RequiredMode.REQUIRED, example = "30")
    private Integer totalPunchDays;

    @Schema(description = "连续打卡天数", requiredMode = Schema.RequiredMode.REQUIRED, example = "7")
    private Integer consecutiveDays;

    @Schema(description = "本月打卡天数", requiredMode = Schema.RequiredMode.REQUIRED, example = "12")
    private Integer thisMonthPunchDays;

    @Schema(description = "打卡日历数据，key为日期(yyyy-MM-dd)，value为打卡信息")
    private Map<String, PunchDayInfo> calendarData;

    @Schema(description = "最近打卡记录")
    private List<PunchRecordRespVO> recentPunches;

    @Schema(description = "打卡日信息")
    @Data
    public static class PunchDayInfo {
        @Schema(description = "是否打卡", example = "true")
        private Boolean hasPunch;

        @Schema(description = "阅读绘本数量", example = "3")
        private Integer bookCount;

        @Schema(description = "阅读时长（分钟）", example = "45")
        private Integer readingTime;

        @Schema(description = "心情", example = "开心")
        private String mood;
    }

}
